<?php

class UsuarioController extends Zend_Controller_Action
{

    public function init()
    {
        $this->initView();
        $this->view->baseUrl = $this->_request->getBaseUrl();
    }

    public function indexAction()
    {
        $zend_auth = Zend_Auth::getInstance();
        if (!$zend_auth->hasIdentity()) {
            $this->_redirect('login');
        } else {

            //creo objeto que maneja la tabla album
            $table = new Application_Model_DbTable_Usuarios(); 
            //obtengo listado de todas las filas de la tabla, y las
            //coloco en la variable datos de la pagina web (de la vista) 
            //que vamos a mostrar

            $this->view->datos = $table->listar();
        }
    }

    public function addAction()
    {
              $zend_auth = Zend_Auth::getInstance();
        if (!$zend_auth->hasIdentity()) {
            $this->_redirect('login');
        } else {
        //titulo para la pagina
        $this->view->title = "Agregar Usuario a la base";
        //valor para <head><title>
        $this->view->headTitle($this->view->title);
        //creo el formulario
        $form = new Application_Form_Usuario();
        //cambio el texto del boton submit
        $form->submit->setLabel('Guardar Usuario');
        //lo asigno oa la accion (la pag web que se mostrara)
        $this->view->form = $form;

        //los formularios envian sus datos a traves de POST
        //si vienen datos de post, es que el usuario ha enviado el formulario
        if ($this->getRequest()->isPost())
        {
            //extrae un arreglo con los datos recibidos por POST
            //es decir, los datos clave=>valor del formulario
            $formData = $this->getRequest()->getPost();

            //isValid() revisa todos los validadores y filtros que le
            //aplicamos a los objetos del formulario: se asegura de que los
            //campos requeridos se hallan llenado, que el formato de la fecha
            //sea el correcto, etc
            if ($form->isValid($formData))
            {
                //aca ya estamos seguros de que los datos son validos
                //ahora los extraemos como se ve abajo
                $nick = $form->getValue('nick');
                $pass = $form->getValue('pass');
                $idtipousuario = $form->getValue('idTipoUsuario');

                //creo objeto Usuario que controla la tabla Usuario de la base de datos
                $usuario = new Application_Model_DbTable_Usuarios();
                //llamo a la funcion agregar, con los datos que recibi del form
                $usuario->agregar($nick, $pass, $idtipousuario);

                //indico que despues de haber agregado el album,
                //me redirija a la accion index de AlbumController, es decir,
                //a la pagina que me muestra el listado de albumes
                $this->_helper->redirector('index');
            }
            //si los datos del formulario no son validos, es decir, falta ingresar
            //algunos o el formato es incorrecto...
            else
            {
                //esta funcion vuelve a cargar el formulario con los datos que se
                //enviaron, Y ADEMAS CON LOS MENSAJES DE ERROR, los que se le mostrarán
                //al usuario
                $form->populate($formData);
            }
        }
    }
    }
    public function deleteAction(){
    
                  $zend_auth = Zend_Auth::getInstance();
        if (!$zend_auth->hasIdentity()) {
            $this->_redirect('login');
        } else {
        //debe venir un parametro, por GET o POST, llamado id, con el id del cliente a borrar
        $id = $this->_getParam('id', 0);
        //creo objeto tabla Album
        $tabla = new Application_Model_DbTable_Usuarios();
        //llamo a la funcion borrar
        $tabla->borrar($id);
        //redirijo a la accion index de este controlador, es decir,
        //al listado de clientes
        $this->_helper->redirector('index');
        }
    }

    public function updateAction()
    {
              $zend_auth = Zend_Auth::getInstance();
        if (!$zend_auth->hasIdentity()) {
            $this->_redirect('login');
        } else {
        //titulo de la pagina
        $this->view->title = "Modificar Usuarios";
        $this->view->headTitle($this->view->title);
        //creo el formulario
        $form = new Application_Form_Usuario ();
        //le pongo otro texto al boton submit
        $form->submit->setLabel('Modificar Usuario');
        $this->view->form = $form;
       
        
        //si el usuario envia datos del form
        if ($this->_request->isPost())
        {
            $formData = $this->getRequest()->getPost();
            //veo si son validos
            if ($form->isValid($formData))
            {
                //extraigo sus datos
                $id = $form->getValue('id');
                $nick = $form->getValue('nick');
                $pass = $form->getValue('pass');
                $tipousuario = $form->getValue('idTipoUsuario');
                
                //creo objeto tabla Album()
                $usuario = new Application_Model_DbTable_Usuarios ();
                //LLAMO A FUNCION CAMBIAR, QUE HACE EL UPDATE
                $usuario->cambiar($id, $nick, $pass, $tipousuario);
                //redirijo a accion index
                $this->_helper->redirector('index');
            } 
            //si los datos no son validos, vuelvo a mostrar el form, con 
            //los mensajes de error
            else
            {
                $form->populate($formData);
            }
        }
        //SI LOS DATOS NO VIENEN POR POST, ENTONCES ESTAMOS LLAMANDO A ESTA FUNCION
        //PARA QUE MUESTRE LOS DATOS DE UN CLIENTE
        else
        {
            //YO HE DECIDIDO QUE DEBE VENIR UN PARAMETRO LLAMADO ID, con el 
            //id del cliente que deseo editar
            //si viene un parametro llamado id le asigno su valor a $id; 
            //si no viene, le asigno cero
            //esto es como llamar a $_REQUEST
            //$id = (int)$this->_request->getParam('Id', 0);
            $id = (int)$this->_getParam('id', 0);
            
            //$this->view->saludo = "hola a todos!! ". $id;
            //si viene algun id
            if ($id > 0)
            {
               //CREO FORM
                $clientes = new Application_Model_DbTable_Usuarios ();
                //extraigo de la talba el album id= $id
                $cliente= $clientes->get($id);
                //populate() toma los datos de $cliente y los coloca en el formualrio.
                //PARA QUE ESTO FUNCIONE, EL NOMBRE DE LOS OBJETOS DEL FORM DEBE
                //SER IGUAL AL NOMBRE DE LOS CAMPOS EN LA TABLA!!
                
                $form->populate($cliente);
            }
        }
    }
    }

}







